home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / SOUND.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-05-24  |  1.6 KB  |  122 lines

  1. CODE    SEGMENT
  2.     ASSUME    CS:CODE,DS:CODE
  3.     ORG    100H
  4. START:    JMP    SHORT L010C
  5. L0101    DB    0
  6. L0109    DW    0FFFFH
  7. L0103    DW    0FFFFH
  8. L0105    DW    0FFFFH
  9. L0107    DW    0FFFFH
  10. L010A    DW    0FFFFH
  11. RFLAG    DW    0
  12. L0120A    DB    50,1
  13.     DW    328,1,0
  14.     DB    200,1
  15.     DW    82,1,0
  16. L0143A    DB    15,8
  17.     DW    137,40,1
  18.     DB    60,8
  19.     DW    137,2,40
  20. L0165A    DB    15,1
  21.     DW    276,256,1
  22.     DB    15,1
  23.     DW    20,256,-1
  24. L0187A    DB    1,1
  25.     DW    276,256,1
  26.     DB    1,1
  27.     DW    20,256,-1
  28. L010C:    CLI
  29.     MOV    SI,80H
  30.     LODSB
  31.     OR    AL,AL
  32.     JNZ    L0115
  33. L018E:    STI
  34.     INT    20H
  35. L0115:    PUSH    SI
  36. L0116:    POP    SI
  37.     LODSB
  38.     CMP    AL,13
  39.     JZ    L018E
  40.     PUSH    SI
  41.     CMP    AL,'0'
  42.     JB    L0116
  43.     CMP    AL,'9'+1
  44.     JNB    NOTNUM
  45.     AND    AL,15
  46.     MOV    AH,L0101
  47.     ADD    AH,AH
  48.     ADD    AH,AH
  49.     ADD    AH,L0101
  50.     ADD    AH,AH
  51.     ADD    AL,AH
  52.     MOV    L0101,AL
  53.     JMP    L0116
  54. NOTNUM: AND    AL,5FH
  55.     MOV    SI,OFFSET L0120A
  56.     CMP    AL,'B'
  57.     JZ    L0189
  58.     MOV    SI,OFFSET L0143A
  59.     CMP    AL,'A'
  60.     JZ    L0189
  61.     MOV    SI,OFFSET L0165A
  62.     CMP    AL,'T'
  63.     JZ    L0189
  64.     MOV    SI,OFFSET L0187A
  65.     CMP    AL,'Q'
  66.     JZ    L0189
  67.     CMP    AL,'S'
  68.     JZ    GOTS
  69.     CMP    AL,'R'
  70.     JNZ    L0116
  71.     XOR    RFLAG,8
  72.     JMP    L0116
  73. GOTS:    MOV    AH,1
  74.     INT    16H
  75.     MOV    RFLAG,0
  76.     JZ    L010C
  77.     MOV    AH,0
  78.     INT    16H
  79.     JMP    L0116
  80. L0189:    ADD    SI,RFLAG
  81.     MOV    DI,OFFSET L0109
  82.     MOV    CX,4
  83.     REP    MOVSW
  84. L018B:    MOV    BX,L0109
  85.     IN    AL,61H
  86.     PUSH    AX
  87. L0190:    MOV    DX,L0103
  88.     MOV    CX,L0105
  89.     MOV    L010A,CX
  90. L01A9:    AND    AL,0FCH
  91.     OUT    61H,AL
  92.     MOV    CX,DX
  93. L01AF:    LOOP    L01AF
  94.     OR    AL,2
  95.     OUT    61H,AL
  96.     MOV    CX,DX
  97. L01B7:    LOOP    L01B7
  98.     DEC    BL
  99.     JNZ    L01A9
  100.     MOV    BL,BYTE PTR L0109
  101.     SUB    DX,L0107
  102.     DEC    L010A
  103.     JNZ    L01A9
  104.     DEC    BH
  105.     JNZ    L0190
  106.     POP    AX
  107.     OUT    61H,AL
  108.     MOV    AL,L0101
  109.     OR    AL,AL
  110.     JZ    L01C0
  111.     DEC    L0101
  112.     JNZ    L018B
  113. L01C0:    JMP    L0116
  114.     CODE    ENDS
  115. END    START
  116. 0
  117.     POP    AX
  118.     OUT    61H,AL
  119.     MOV    AL,L0101
  120.     OR    AL,AL
  121.     JZ    L01C0
  122.     DEC    L0101